/**
*  
* @Function TODO 
* @ProjectName credit-data-platform 
* @PackageName com.py.credit.entity.enums    
* @FileName DataCollectionFieldsEnum.java    
* @Date 2018年6月22日下午2:00:45
* @Author Min DongXv
* @Copyright (c) 2018, 金电联行 All Rights Reserved.   
*   
*/
package com.py.credit.entity.enums;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import com.py.credit.entity.common.OptionalColumn;

/**
 * 
 * @Function TODO
 * @ClassName DataCollectionFieldsEnum
 * @Date 2018年6月22日 下午2:00:45
 * @Author Min DongXv
 * 
 */
public enum DataCollectionFieldsEnum {
	//SJLB("sjlb", "数据类别", "varchar", "input", true, true, new HashMap<String, String>(), false, true),
	RESOURCENAME("resourceName", "数据目录", "varchar", "input", true, true, new HashMap<String, String>(), false, true),
	
	UPDATEFREQUENCY("updateFrequency", "采集周期", "varchar", "select", true, true, new HashMap<String, String>() {
		private static final long serialVersionUID = -6838599110798063012L;
		{
			put("M", "每月");
			put("Q", "每季度");
			put("Y", "每年");
			put("W", "每周");
			put("D", "每日");
			put("S", "实时");
		}
	}, false, true),
	//LASTOPERATORNAME("lastOperatorName", "采集人员", "varchar", "input", true, false,new HashMap<String, String>(), false, false),
	//LASTOPERATETIME("lastOperateTime", "采集时间", "date", "", true,false, new HashMap<String, String>(), false, false),
	ISFINISH("isFinish", "本期任务完成进度", "varchar",
							"select", true, false, new HashMap<String, String>() {
								private static final long serialVersionUID = 7901834667460494307L;
								{
									put("0", "未完成");
									put("1", "已完成");
									put("2", "进行中");
									put("3", "-");
								}
					}, false, true);

	private String colNameEN;
	private String colNameCN;
	private String type;
	private boolean defaultShow;
	private String widget;
	private boolean fuzzy;
	private HashMap<String, String> widgetValue;
	private boolean advanceConditionShow;
	private boolean searchIsShow;

	private DataCollectionFieldsEnum(String colNameEN, String colNameCN, String type, String widget,
			boolean defaultShow, boolean fuzzy, HashMap<String, String> widgetValue, boolean advanceConditionShow,
			boolean searchIsShow) {
		this.colNameEN = colNameEN;
		this.colNameCN = colNameCN;
		this.type = type;
		this.widget = widget;
		this.defaultShow = defaultShow;
		this.fuzzy = fuzzy;
		this.widgetValue = widgetValue;
		this.advanceConditionShow = advanceConditionShow;
		this.searchIsShow = searchIsShow;
	}

	public String getColNameEN() {
		return colNameEN;
	}

	public void setColNameEN(String colNameEN) {
		this.colNameEN = colNameEN;
	}

	public String getColNameCN() {
		return colNameCN;
	}

	public void setColNameCN(String colNameCN) {
		this.colNameCN = colNameCN;
	}

	public String getType() {
		return type;
	}

	public void setType(String type) {
		this.type = type;
	}

	public boolean isDefaultShow() {
		return defaultShow;
	}

	public void setDefaultShow(boolean defaultShow) {
		this.defaultShow = defaultShow;
	}

	public HashMap<String, String> getWidgetValue() {
		return widgetValue;
	}

	public void setWidgetValue(HashMap<String, String> widgetValue) {
		this.widgetValue = widgetValue;
	}

	public String getWidget() {
		return widget;
	}

	public void setWidget(String widget) {
		this.widget = widget;
	}

	public boolean isFuzzy() {
		return fuzzy;
	}

	public void setFuzzy(boolean fuzzy) {
		this.fuzzy = fuzzy;
	}

	public boolean isAdvanceConditionShow() {
		return advanceConditionShow;
	}

	public void setAdvanceConditionShow(boolean advanceConditionShow) {
		this.advanceConditionShow = advanceConditionShow;
	}

	public boolean isSearchIsShow() {
		return searchIsShow;
	}

	public void setSearchIsShow(boolean searchIsShow) {
		this.searchIsShow = searchIsShow;
	}

	public static List<OptionalColumn> getOptionalColumns() {
		List<OptionalColumn> OptionalColumns = new ArrayList<OptionalColumn>();
		DataCollectionFieldsEnum[] values = DataCollectionFieldsEnum.values();
		for (DataCollectionFieldsEnum value : values) {
			OptionalColumn optionalColumn = new OptionalColumn(value.getColNameEN(), value.getColNameCN(),
					value.getType(), value.isDefaultShow(), value.getWidget(), value.isFuzzy(), value.getWidgetValue(),
					value.isSearchIsShow());
			OptionalColumns.add(optionalColumn);
		}
		return OptionalColumns;

	}

	public static List<OptionalColumn> getAdvancedConditionColumns() {
		List<OptionalColumn> OptionalColumns = new ArrayList<OptionalColumn>();
		DataCollectionFieldsEnum[] values = DataCollectionFieldsEnum.values();
		for (DataCollectionFieldsEnum value : values) {
			if (value.isAdvanceConditionShow()) {
				OptionalColumn optionalColumn = new OptionalColumn(value.getColNameEN(), value.getColNameCN(),
						value.getType(), value.isDefaultShow(), value.getWidget(), value.isFuzzy(),
						value.getWidgetValue(), value.isSearchIsShow());
				OptionalColumns.add(optionalColumn);
			}
		}
		return OptionalColumns;
	}

	public static List<String> getDefaultShowColumnEN() {
		List<String> columns = new ArrayList<String>();
		DataCollectionFieldsEnum[] values = DataCollectionFieldsEnum.values();
		for (DataCollectionFieldsEnum value : values) {
			if (value.isDefaultShow()) {
				columns.add(value.getColNameEN());
			}
		}
		columns.add("managerId");
		columns.add("tableId");
		columns.add("rootId");
		columns.add("infoId");
		return columns;
	}
}
